In recent years, non-volatile memories that are data-rewritable semiconductor devices are widely used. Before the memories are shipped to the customer, the memories are tested or screened. If bad blocks are found in the memory during test, the bad blocks are repaired by for example laser repair. After repair, the passed memory is shipped to the customer.
In the following, discussed are two situations, a system having a memory controller and a system without a memory controller.
Normally, a system has a memory controller to serve the flash memory. The block would be marked as a bad block by the controller if the flash memory in the system happened to be failed during block erase, so the number of bad blocks would get bigger when the operation time goes by (i.e. after multiple usage of the memory).
Also, consider a case that there is no controller in a system to serve flash memory. The flash memory could be probably accessed by other device (for example a CPU) directly without a controller acted as an interface. If other device would access some content in some specific physical address of the flash memory, the system would go wrong when anyone block in those specific physical address faces erase failure problem.
However, after the memory is shipped to the customer, after use, a normal block or normal blocks of the memory may become bad block(s). Because usually the user does not have a suitable machine to repair the newly-found bad block(s), the newly-found bad block(s) is/are not repaired. If the newly-found bad block(s) is/are very important, the memory would not work normally. Therefore, it needs an on-the-fly repair method for memory even after the memory is shipped. In the following, the term “on-the-fly” has the same or similar meaning with directly or immediately.